package com.haixiaoke.saas.order.state.server;

import com.haixiaoke.saas.order.domain.Order;

/**
 * 特定状态服务方-接口
 *
 * @author qixi
 */
public interface ISpecificOrderStateServerRole {


    void pay(Order order);


    void sign(Order order);

    void signAudit(Order order);

    /**
     * 审核通过
     */
    void approved(Order order);

    /**
     * 审核不通过
     */
    void disagree(Order order);

    /**
     * 预定变更
     */
    void changeOrder(Order order);

    void cancel(Order order);

    /**
     * 退租
     */
    void refundRent(Order order);

    void refundRentAudit(Order order);

    /**
     * 续租
     */
    void relet(Order order);

    void reletAudit(Order order);

    void exchangeHouse(Order order);

    void exchangeHouseAudit(Order order);

    void sublease(Order order);

    void subleaseAudit(Order order);

    void houseInspection(Order order);

    void orderOvertime(Order order);

    void preOrderSignOvertime(Order order);

    int orderStayCheckIn(Order order,String remark);

    int orderCancellation(Order order,String recordSource,String recordReason);

    /**
     * 代入住->退订中
     */
    int cancelReservation(Order order, String recordSource, String recordReason);

    /**
     * 代入住->已入住
     */
    int orderCheckIn(Order order, String recordSource, Long userId);

    int unsubscribeSuccessfully(Order order, String recordSource, String recordReason);

    /**
     * 已入住->退房中
     */
    int orderCheckingOut(Order order, String recordSource, Long operatorId);

    /**
     * 退房中->已完成,续租-已支付->续租-已完成
     */
    int orderCompletion(Order order, String recordSource, Long operatorId);

    /**
     * 退订中->待入住
     */
    int unsubscribeFailureStayCheckIn(Order order, String remark);
}
